In general, enterprise application software (EAS) refers to software generally used by organizations (e.g., businesses, governments, schools) rather than individual consumers. Many enterprise applications are highly complex and include multiple, independent software components. Enterprise applications can also be deployed on a variety of platforms across networks, intranets, or the Internet. Since they often serve the interests of large corporations and governments, enterprise applications typically meet stringent requirements for security, performance, and scalability.
Often, enterprise applications (e.g., software for supply-chain management, enterprise resource planning (ERP), customer relationship management (CRM), and payroll management) are not designed to communicate directly with each other without some type of middleware. This is partly because enterprise applications may run on different operating systems, use different database schemes, or be coded in different programming languages. Some applications may also be traditional systems that were not designed to work with other applications in a distributed network environment. When the enterprise applications an organization uses have no way of readily communicating with each other, inefficiencies can result. For example, multiple copies of the same data may be stored in different locations and some processes may be difficult to automate. If an unstructured approach is used to integrate these applications, a thicket of ad hoc dependencies can arise and result in complex systems that are difficult to manage and maintain.
Enterprise application integration (EAI) refers to the process of linking such applications together in a structured fashion to facilitate communication and overall efficiency without causing unmanageable complexity. Application programming interfaces (APIs) are one way enterprise applications can communicate with each other. APIs generally expose various routines and methods to software developers for use in obtaining and modifying data using features of a software application. These APIs may be accessible programmatically (e.g., as function calls programmed in an application or function library) or via a web resource for web-based applications. Web-based applications can invoke functionality exposed by an API, for example, by using a Representational State Transfer function call (a REST call), queries in an HTTP POST request, a Simple Object Access Protocol (SOAP) request, or other protocols that allow client software to invoke functions on a remote system.
Customer Information Control System (CICS) refers to a class of mixed-language application servers that provide online transaction management and connectivity for applications. CICS is middleware that facilitates fast, high-volume processing for online transactions. Online transaction processing (OLTP) refers to a type of information systems that facilitate and manage transaction-oriented applications, typically for data entry and retrieval transaction processing. A type of object called a “data area” holds data to be accessed by a job running on a system. A data area is used to pass data from one program to another. In CICS, the communications area (COMMAREA) is one example of a data area. Alternatively, a construct called a “channel” is another type of data area for passing information between programs. A channel is a group of named data blocks referred to as “containers.”
Transactional Middleware refers to the software that supports the execution of electronic transactions in a distributed setting. Transaction Processing Monitors (TPM) such as CICS are one type of transactional middleware. TPMs run transactions in a way that makes it appear as though distributed operations are executed atomically (i.e., by ensuring that groups of operations are executed in their entirety or not all). This adds a layer of abstraction that makes complex systems easier to design for programmers.